ASP.Net Core অ্যাপ্লিকেশনে ফাইল ডাউনলোড করার জন্য আপনি FileResult অথবা PhysicalFileResult ব্যবহার করতে পারেন। এটি ব্যবহারকারীদের কোনো নির্দিষ্ট ফাইল ডাউনলোড করার অনুমতি দেয়। ফাইল ডাউনলোড করতে হলে, প্রথমে সেই ফাইলটি সার্ভারে থাকতে হবে এবং পরে সেই ফাইলের ইউআরএল ব্যবহার করে ডাউনলোডের জন্য একটি রেসপন্স তৈরি করতে হবে।
ASP.Net Core অ্যাপ্লিকেশনে ফাইল ডাউনলোড করার জন্য সাধারণত তিনটি স্টেপ অনুসরণ করতে হয়:
প্রথমে একটি কন্ট্রোলার তৈরি করতে হবে যেখানে ফাইল ডাউনলোডের জন্য একটি অ্যাকশন মেথড থাকবে। এই মেথডে FileResult ব্যবহার করা হবে, যা ফাইলটি ডাউনলোড করার জন্য ব্যবহারকারীকে পাঠাবে।
এখানে, ফাইলের পাথ নির্দিষ্ট করে ফাইলটি রিটার্ন করা হচ্ছে:
public class FileController : Controller
{
public IActionResult DownloadFile(string fileName)
{
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "files", fileName);
// ফাইলটি আছে কিনা চেক করা
if (!System.IO.File.Exists(filePath))
{
return NotFound(); // ফাইল না পাওয়া গেলে 404 রিটার্ন করা
}
var fileBytes = System.IO.File.ReadAllBytes(filePath); // ফাইল থেকে ডাটা পড়া
return File(fileBytes, "application/octet-stream", fileName); // ফাইল রিটার্ন করা
}
}
এখানে:
fileName
প্যারামিটারটি ফাইলের নাম হিসেবে ব্যবহৃত হচ্ছে।Path.Combine
ব্যবহার করে ফাইলটির সম্পূর্ণ পাথ তৈরি করা হচ্ছে।System.IO.File.Exists()
ব্যবহার করে ফাইলের অস্তিত্ব চেক করা হচ্ছে।File()
মেথডটি ফাইলের কন্টেন্ট এবং MIME টাইপ পাঠানোর জন্য ব্যবহৃত হচ্ছে। এখানে "application/octet-stream"
MIME টাইপ ব্যবহার করা হয়েছে, যা সাধারণত কোনো বাইনারি ফাইলের জন্য ব্যবহার হয়।যদি আপনার সার্ভারে কোনো ফাইল শারীরিকভাবে স্টোর করা থাকে, তবে আপনি PhysicalFileResult ব্যবহার করে সরাসরি ফাইলটি রিটার্ন করতে পারেন। এটি ফাইলের পাথ এবং MIME টাইপ সরাসরি নির্দিষ্ট করতে সক্ষম।
public class FileController : Controller
{
public IActionResult DownloadFile(string fileName)
{
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "files", fileName);
// ফাইলটি চেক করা
if (!System.IO.File.Exists(filePath))
{
return NotFound();
}
// ফাইল রিটার্ন করা
return PhysicalFile(filePath, "application/octet-stream", fileName);
}
}
এখানে, PhysicalFile()
মেথডটি সরাসরি ফাইলের পাথ গ্রহণ করে এবং সেটি ডাউনলোড করার জন্য রিটার্ন করে।
ফাইল ডাউনলোড ট্রিগার করার জন্য, আপনি HTML লিংক অথবা জাভাস্ক্রিপ্টের মাধ্যমে কন্ট্রোলারের ডাউনলোড অ্যাকশন কল করতে পারেন।
এটি খুব সহজ উপায়, যেখানে আপনি সরাসরি href অ্যাট্রিবিউট ব্যবহার করে ফাইল ডাউনলোড লিংক তৈরি করতে পারেন:
<a href="/File/DownloadFile?fileName=test.pdf" download>Download PDF</a>
এখানে, href
প্যারামিটারটিতে কন্ট্রোলারের ডাউনলোড ফাংশনের ইউআরএল এবং ফাইল নাম পাস করা হচ্ছে।
এছাড়া, আপনি জাভাস্ক্রিপ্ট ব্যবহার করেও ফাইল ডাউনলোড ট্রিগার করতে পারেন। নিচে একটি উদাহরণ দেয়া হলো:
<button onclick="downloadFile('test.pdf')">Download PDF</button>
<script>
function downloadFile(fileName) {
window.location.href = '/File/DownloadFile?fileName=' + fileName;
}
</script>
এখানে, downloadFile()
ফাংশনটি কন্ট্রোলারের ডাউনলোড ফাংশনে কল করবে এবং নির্দিষ্ট ফাইলটি ডাউনলোড করবে।
ফাইল ডাউনলোড ফিচার তৈরি করার সময় কিছু নিরাপত্তা বিষয়ও মাথায় রাখতে হবে, যেমন:
public IActionResult DownloadFile(string fileName)
{
if (!User.IsInRole("Admin"))
{
return Unauthorized(); // অনুমোদন ছাড়া ফাইল ডাউনলোড করা যাবে না
}
// বাকি কোড
}
ASP.Net Core অ্যাপ্লিকেশনে ফাইল ডাউনলোডের জন্য FileResult, PhysicalFileResult এবং FileStreamResult ব্যবহার করা হয়। আপনি কন্ট্রোলারে ডাউনলোড ফাংশন তৈরি করে ফাইল পাঠাতে পারেন এবং HTML বা জাভাস্ক্রিপ্টের মাধ্যমে ব্যবহারকারীকে ডাউনলোডের জন্য নির্দেশনা দিতে পারেন।
Read more